package pt.uminho.di.poo.presentation.transitarios.CLI;

import java.io.IOException;
import java.util.GregorianCalendar;
import java.util.List;

public interface ILinhaComandos {

	public abstract boolean obterBooleanInput(String descricaoEscolha)
			throws IOException;

	public abstract Float obterFloatInput(String descricaoEscolha)
			throws IOException;

	public abstract Integer obterIntegerInput(String descricaoEscolha)
			throws IOException;

	public abstract Integer obterOpcao(List<String> options,
			String descricaoEscolha) throws IOException;

	public abstract String obterStringInput(String descricaoEscolha)
			throws IOException;

	public abstract GregorianCalendar obterDataInput(String descricaoEscolha)
			throws IOException;

	// Mesmas opcoes, com opcao de responder ou aceitar valor por omissao
	public abstract boolean obterOpcionalBooleanInput(String descricaoEscolha,
			boolean valorDefault) throws IOException;

	public abstract Float obterOpcionalFloatInput(String descricaoEscolha,
			Float valorDefault) throws IOException;

	public abstract Integer obterOpcionalIntegerInput(String descricaoEscolha,
			Integer valorDefault) throws IOException;

	public abstract Integer obterOpcionalOpcao(List<String> options,
			String descricaoEscolha, Integer valorDefault) throws IOException;

	public abstract String obterOpcionalStringInput(String descricaoEscolha,
			String valorDefault) throws IOException;

	public abstract GregorianCalendar obterOpcionalDataInput(
			String descricaoEscolha, GregorianCalendar valorDefault)
			throws IOException;

	public abstract void start() throws IOException;

}